package cn.xiaolang.function.design_pattern.duty_chain_pattern;

import java.util.Arrays;

/**
 * duty chain pattern started
 *
 * @author Dean
 * @date 2020-12-23
 */
public class GetStarted {
    /**
     * 链条上有所有任务，每个任务执行者，推动任务执行，都能中止工作，或者返回到链条
     *
     * 优点：
     * 1 降低耦合度。它将请求的发送者和接收者解耦
     * 2 增强给对象指派职责的灵活性，允许动态地新增或者删除责任链
     * 3 易拓展
     * <p>
     * 缺点：
     * 1 不能保证请求一定被接收；
     * 2 系统性能将受到一定影响，调试时不方便，可能会造成循环调用
     */
    public static void main(String[] args) {
        MyFilterChain myFilterChain = new MyFilterChain();
        myFilterChain.setFilters(Arrays.asList(new MyFilter("F1"), new MyFilter("F2")));
        myFilterChain.doFilter();
    }
}
